#ifndef _SYS_REGEX_MATCHER_H_
#define _SYS_REGEX_MATCHER_H_

#include "FanObj.h"
#include "SysTypes.h"

#define REGEX_MATCHER_VTABLE(self)   ((RegexMatcherVTable*)((FanObj*)self)->vtable)


extern Type*    RegexMatcher_classType;
extern VTable*  RegexMatcher_classVTable;


/* [sys::RegexMatcher] Attributes */
struct RegexMatcher
{
  FanObj        super;
};


/* [sys::RegexMatcher] Virtual-table */
typedef struct RegexMatcherVTable
{
  FanObjVTable  super;
} RegexMatcherVTable;


/* [sys::RegexMatcher] Methods and fields */
Bool            RegexMatcher_matches(RegexMatcher* self);
Bool            RegexMatcher_find(RegexMatcher* self);
Int             RegexMatcher_groupCount(RegexMatcher* self);
Str*            RegexMatcher_group_0(RegexMatcher* self);
Str*            RegexMatcher_group(RegexMatcher* self, Int group);
Int             RegexMatcher_start_0(RegexMatcher* self);
Int             RegexMatcher_start(RegexMatcher* self, Int group);
Int             RegexMatcher_end_0(RegexMatcher* self);
Int             RegexMatcher_end(RegexMatcher* self, Int group);


/* [sys::RegexMatcher] Type-system functions */
Type*           RegexMatcher_initType(void);
VTable*         RegexMatcher_initVTable(void);
void            RegexMatcher_initStatic(void);


#endif
